package __二叉树

/*
https://leetcode.cn/problems/symmetric-tree/

101. 对称二叉树
给你一个二叉树的根节点 root ， 检查它是否轴对称。

示例 1：
输入：root = [1,2,2,3,4,4,3]
输出：true

示例 2：
输入：root = [1,2,2,null,3,null,3]
输出：false
*/
// 递归

func isSymmetric(root *TreeNode) bool {
	return defs(root.Left, root.Right)
}

func defs(left *TreeNode, right *TreeNode) bool {
	//左右节点都是nil, 返回true
	if left == nil && right == nil {
		return true
	}
	//左右节点其中有一个为nil, 返回false
	if left == nil || right == nil {
		return false
	}

	//左右节点的值不相同, 返回false
	if left.Val != right.Val {
		return false
	}

	//当前层左右节点轴对称, 遍历下一层节点
	return defs(left.Left, right.Right) && defs(right.Left, left.Right)
}
